// ============================================================================
// FileName: RuntimeConfigExample.cs
//
// Description:
// A stateless SIP proxy core to demonstrate SIP Proxy functionality.
//
// Author(s):
// Aaron Clauson
//
// License: 
// This software is licensed under the BSD License http://www.opensource.org/licenses/bsd-license.php
//
// Copyright (c) 2006 Aaron Clauson (aaronc@blueface.ie), Blue Face Ltd, Dublin, Ireland (www.blueface.ie)
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that 
// the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
// Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following 
// disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Blue Face Ltd. 
// nor the names of its contributors may be used to endorse or promote products derived from this software without specific 
// prior written permission. 
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
// BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
// POSSIBILITY OF SUCH DAMAGE.
// ============================================================================

using System;
using System.Net;
using System.Text.RegularExpressions;
using System.Threading;
using System.Xml;
using CN.VoIP.Net.SIP;
using CN.VoIP.SIPServer;
using log4net;

#if UNITTEST
using NUnit.Framework;
#endif

namespace CN.VoIP.SIPServerCores.StatefulProxy
{
	public class RuntimeConfigExample : SIPProxyRuntimeConfig
	{	
		public override SwitchCallStruct SwitchCall(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, SIPRequest sipRequest)
		{
			SwitchCallStruct switchCallStruct = SwitchCallStruct.Empty;

			string dst = sipRequest.URI.User;
      
			switch(dst)
			{
				case "100":
                    switchCallStruct = new SwitchCallStruct("anonymous.invalid", "password", "sip:303@fwd.pulver.com", null, null, "213.168.225.133:5061", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, true, true);
					break;
				case "101":
                    switchCallStruct = new SwitchCallStruct("anonymous.invalid", "password", "sip:612@fwd.pulver.com", null, null, "69.90.155.70:5060", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, true, true);
					break;
				default:
					break;
			}
  
			return switchCallStruct;
		}

		
		#region Unit testing.

		#if UNITTEST

		[TestFixture]
		public class RuntimeConfigExampleUnitTest
		{			
			[TestFixtureSetUp]
			public void Init()
			{	}

			[TestFixtureTearDown]
			public void Dispose()
			{			
				
			}

			[Test]
			public void SampleTest()
			{
				Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);
				
				Assert.IsTrue(true, "True was false.");

				Console.WriteLine("---------------------------------"); 
			}					
		}

		#endif

		#endregion
	}
}
